import { type Product } from '@/types/product'
import { getProductListApi } from '@/api/productInfo'
import { useProductStore } from '@/stores'
export default function () {
  const productStore = useProductStore()
  // 获取商品列表（根据商品类别获取所有商品）
  const getProductList = async (reset: boolean = false, typeId: string = '') => {
    // 如果重置，则重置分页参数和商品列表
    if (reset) {
      productStore.currentPage = 1
      productStore.productList = []
      productStore.hasMore = true
    }

    // 如果没有更多商品，则直接返回
    if (!productStore.hasMore) {
      ElMessage.warning('没有更多商品了')
      return
    }

    // 调用 API 获取商品列表
    const res = await getProductListApi(productStore.currentPage, productStore.pageSize, typeId)
    if (res.code === 0) {
      // 处理商品数据
      const newProducts = res.data.records.map((item: Product) => ({
        ...item,
        // 将图片 URL 字符串转为数组
        image: item.image.split(',').map(url => url.replace(/^'|'$/g, '')),
      }))
      // 更新商品列表
      productStore.productList = [...productStore.productList, ...newProducts]
      // 如果获取的商品数量少于 pageSize，且非首次获取少于pageSize,说明没有更多商品了
      if (
        newProducts.length < productStore.pageSize
      ) {
        productStore.hasMore = false
      } else {
        // 否则，页码加1
        productStore.currentPage++
      }
    } else if (res.code === 1) {
      ElMessage.warning(res.msg)
      productStore.hasMore = false
      productStore.productList = []
    }
  }

  return { getProductList }
}
